// easy

// 给定两个字符串形式的非负整数num1和num2，计算它们的和

// 要求： num1和num2的长度都小于5100
// num1和num2都只包含数字0-9
// num1和num2都不包含任何前导0
// 不能使用内建的BigInteger库，也不能直接将输入的字符串转换为整数形式

// 思路：使用字符串的形式模拟大数加法
// 加法算法：从个位数开始，由低位到高位，按位相加，如果相加之后超过10，就需要向前进位

function addString(num1, num2) {
    let digit1 = num1.length -1
    let digit2 = num2.length -1

    // 进位
    let carry = 0
    // sum存储反向结果
    let sum = []
    // 逆序相加
    while (carry > 0 || digit1 >= 0 || digit2>= 0) {
        // 获取对应位数上的数字
        let num1_d = digit1 >= 0 ? Number(num1[digit1]) : 0
        let num2_d = digit2 >= 0 ? Number(num2[digit2]) : 0
        digit1 -= 1
        digit2 -= 1
        // 计算结果，存储，进位
        let num = num1_d + num2_d + carry
        sum.push(num % 10)
        carry = Math.floor(num / 10)
    }
    return sum.reverse().join('')
}

let num1 = "11", num2 = "123"
console.log(addString(num1, num2));